1. Field of the Invention
The present invention relates to a memory management mechanism for applications that use data buffering mechanisms on multiprocessor systems having a non-uniform memory access (NUMA) system architecture. More particularly, the present invention provides a local memory accessing mechanism that decreases memory input-output latency by promoting the use of local memory accessing and data migration for applications in NUMA based multiprocessor systems.
2. Description of the Related Art
Some multiprocessor based systems use a plurality of processors connected to local and non-local shared memory and data storage subsystems for data storage and retrieval while running processes. In such systems, memory transactions with the non-local shared memory or data storage subsystem results in high memory input-output latency and thus, the execution times for processes running in such systems is high. In some instances, the high execution times for processes are not significant. However, in database management systems and like systems, high execution times for running processes can have a significant impact on a company's business.
One multiprocessor system architecture designed to improve memory input-output latency and thus, decrease process execution times, uses a NUMA based system architecture. In NUMA based multiprocessor systems, each processor is connected to local memory via a local bus. The processor and local memory are known as a processor node. The processor nodes of a NUMA based system are interconnected through a separate bus so that any node on the bus can access data from any other node connected to the node bus.
In NUMA based systems, a process running on a node needs to access data from local memory, as opposed to accessing data from non-local memory. Accessing data from local memory reduces memory input-output latency and the execution time of the process. Database management systems and other applications allocate a buffer cache in main memory to cache data from external storage subsystems for quick access. This buffer cache spans local memories in a NUMA system. In addition, many processes may be running at one time. After such a system starts-up, a process running on a processor node retrieves data into the memory supplying a virtual address. The operating system assigns a physical address for the data and maps the virtual address to physical memory in the NUMA system. This mapping typically remains fixed for the duration of the running process. The effect of this approach is that local memory accesses cannot be consistently maintained in database management systems and other systems where the original virtual-to-physical memory mapping may not place the retrieved data in the process' local memory or the process using the data may change from processor node to processor node.
As a result, when running processes in, for example, a database management system, where the processor node running the process can change so that when the process retrieves data the data has to be retrieved from non-local memory by the new local node. This occurs each time the process tries to retrieve the data because the mapping between the virtual addresses and the physical addresses has not changed.
To illustrate, using a banking system as a database management system where a customer wishing to make a deposit interacts with teller A, and teller A retrieves the customers account information and makes the transaction using a process running on node A. Under these circumstances, when the data is retrieved, the operating system assigns virtual addresses for the customer account data, and the virtual addresses are mapped to physical addresses which may not be associated with node A. Subsequent memory transactions are not local to node A. Even if by chance the memory assigned is local to node A, if another processor node B services another transaction or completes the first transaction, the process has to retrieve the data from the local memory of processor node A so that the new memory transaction is now non-local. As a result, the execution time of the transaction will increase.
Thus, one drawback of current NUMA based systems is that local memory accessing and data migration are not promoted.
Therefore, a need exists for a NUMA based system that promotes local memory accessing and data migration to local memory in order to decrease memory input-output latency and to decrease the execution time of the processes.